1ac64d8fa3680e78b168c00fafe49c8fcd35bbb3,chapter9/src/main/java/org/lwjglb/engine/graph/Transformation.java,Transformation,getViewMatrix,#Camera#,28
Before Change
viewMatrix.identity();
Vector3f cameraPos = camera.getPosition();
Vector3f rotation = camera.getRotation();
viewMatrix.translate(-cameraPos.x, -cameraPos.y, -cameraPos.z).
rotateX((float)Math.toRadians(rotation.x)).
rotateY((float)Math.toRadians(rotation.y)).
rotateZ((float)Math.toRadians(rotation.z));
return viewMatrix;
}
After Change
viewMatrix.identity();
// First do the rotation so camera rotates over its position
viewMatrix.rotate((float)Math.toRadians(rotation.x), new Vector3f(1, 0, 0))
.rotate((float)Math.toRadians(rotation.y), new Vector3f(0, 1, 0));
// Then do the translation
viewMatrix.translate(-cameraPos.x, -cameraPos.y, -cameraPos.z);
return viewMatrix;
}